package compilador.semantico.comando;

import compilador.Command;
import compilador.CommandException;
import compilador.semantico.GerenciadorDeContexto;
import compilador.semantico.SemanticException;
import compilador.semantico.TabelaSemantica.TiposPrimitivo;

public class VerOperUnarioCommand implements Command {

	public void run(String... args) throws CommandException {
		String operador = args[0];
		GerenciadorDeContexto pilha = GerenciadorDeContexto.getInstance();
		
		String tipoTopo = pilha.top().getTipo();
		if ( (operador.equals("!") && !tipoTopo.equals(TiposPrimitivo.Boolean.name())) || 
				(operador.equals("-") && 
						(!tipoTopo.equals(TiposPrimitivo.Integer.name()) && !tipoTopo.equals(TiposPrimitivo.Float.name())) )) {
				throw new SemanticException("Operador Unario "+operador+" usado de Forma errada.");
		} 
	}
}
